from passlib.hash import pbkdf2_sha256

from passlib.context import CryptContext

pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")


def encrypt_password(password: str) -> str:
    """
    使用 PBKDF2-SHA256 算法对密码进行加密
    Args:
        password: 原始密码
    Returns:
        加密后的密码哈希值
    """
    return pwd_context.hash(password)


def verify_password(password: str, hash: str) -> bool:
    """
    验证密码是否正确
    Args:
        password: 待验证的密码
        hash: 已存储的密码哈希值
    Returns:
        密码是否正确
    """
    return pwd_context.verify(password, hash)


def encrypt_password_sha(password: str) -> str:
    """
    使用 PBKDF2-SHA256 算法对密码进行加密

    Args:
        password: 原始密码
    Returns:
        加密后的密码哈希值
    """
    return pbkdf2_sha256.hash(password)


def verify_password_sha(password: str, hash: str) -> bool:
    """
    验证密码是否正确

    Args:
        password: 待验证的密码
        hash: 已存储的密码哈希值
    Returns:
        密码是否正确
    """
    return pbkdf2_sha256.verify(password, hash)


enc = encrypt_password_sha("123456")
print(enc)
print(verify_password_sha("123456", enc))

import bcrypt

password = "123456"

# 加密密码
hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
print(hashed_password)
# 验证密码
if bcrypt.checkpw(password.encode("utf-8"), hashed_password):
    print("密码正确")
else:
    print("密码错误")
